package cn.pilipa.accounting.common;

import java.util.Optional;
import org.apache.commons.lang3.StringUtils;

/**
 * Enum 工具类.
 */
public class EnumUtils {
  /**
   * 从description转换.
   *
   * @param description .
   * @return 指定类型的枚举.
   */
  public static <E extends Enum<E> & Description> Optional<E> fromDescription(
      final Class<E> enumClass,
      final String description
  ) {
    E[] values = enumClass.getEnumConstants();
    for (E value : values) {
      if (StringUtils.equals(value.description(), description)) {
        return Optional.of(value);
      }
    }
    return Optional.empty();
  }
}
